#include "AVLTree.h"
#include <string>

template<class K>
class Less
{
public:
    bool operator()(const K& a, const K& b)
    {
        return a<b;
    }
};

template<class T>
class MapKey
{
public:
    const int& operator()(const T& v)
    {
        return v.first;
    }
};

namespace AVLTree_map
{
    template<class K, class V, class Compare = Less<K>>
    class map
    {
    public:
        pair<iterator, bool> insert(const pair<K, V> data)
        {
            return _t.Insert(data);
        }

    private:

        //Node* _root;
        AVLTree<K, pair<K, V>, Compare, MapKey> _t;
    };
}